#include<bits/stdc++.h>

using namespace std;
typedef long long ll;

int add(int a, int b) {
    return a + b;
}

int sub(int a, int b) {
    return a - b;
}

int mul(int a, int b) {
    return a * b;
}

/**
 * 函数传递函数（被传递的函数名作为参数，又称回调函数)
 * @param f 传递的二元函数（代表一类函数）
 * @param a
 * @param b
 */
void show(int f(int, int), int a, int b) {
    cout << f(a, b) << endl;
}

int main() {
    int a = 3, b = 4;
    cout << add(a, b) << endl;
    show(add, a, b);
    show(sub, a, b);
    show(mul, a, b);
    return 0;
}